"""author: wenyao
   data: 2021/12/13
   project: cjh
"""
#属性：对象的描述信息
#静态属性  -- 类属性
#普通属性  -- 实例属性

#方法：对象的行为
#实例方法
#静态发放
#类方法

class A():
    name = "changsha"  #静态属性
    def __init__(self):
        self.country = "china"  #普通属性
    #普通（实例） 方法
    #接受的第一个参数，就代表实例本身
    def normal_method(self,name):
        print("normal:".center(30,"*"))
        print(self.name, name)

    #使用classmethod修饰的方法，称为类方法
    #接受的第一个参数是类
    @classmethod
    def class_method(cls,name):
        print("classmethod:".center(30,"*"))
        print(type(cls),cls)
        print(cls.name, name)

    #使用staticmethod修饰的方法，称为静态方法
    #可以接受参数也可以不接收参数，参数不代表实例也不代表类
    @staticmethod
    def static_method(name):
        print("static_method:".center(30,"*"))
        print(A.name, name)

a1 = A()

#通过实例调用类方法、静态方法、实例方法 都可以
# a1.normal_method("normalmethod")
# a1.class_method("classmethod")
# a1.static_method("staticmethod")

#通过类去调用类方法、静态方法、实例方法
#通过类调用实例方法的时候，一定要传一个实例进去
# A.normal_method(a1,"normal_method")
# A.class_method("class_method")
# A.static_method("static_method")

